﻿using Cassandra;
using Renci.SshNet;
using System;
using System.Collections.Generic;
using System.Web;

namespace IDAdmin.Lib.DataLayer
{
    public class ConnectionHelper
    {
        private const string CRYPT_KEY = "TRC9uZEpBDh9HvaeyOeh7";

        private static string _ConnectionString = "";
        /// <summary>
        /// Chuỗi tham số kết nối
        /// </summary>
        public static string ConnectionString
        {
            get
            {
                try
                {
                    if (_ConnectionString == "")
                        _ConnectionString = Utils.CryptHelper.Decrypt(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"], CRYPT_KEY, true);
                    return _ConnectionString;
                }
                catch(Exception ex)
                {
                    return "";
                }
            }
            set { _ConnectionString = value; } // hoa them vo
        }

        /// <summary>
        /// Lấy đối tượng kết nối CSDL
        /// </summary>
        /// <returns></returns>
        public static System.Data.SqlClient.SqlConnection GetConnection()
        {
            try
            {
                System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection();
                cn.ConnectionString = ConnectionString;
                cn.Open();
                return cn;
            }
            catch
            {
                throw new Exception("Không kết nối được với máy chủ CSDL_SQLSERVER");
            }
        }

        /// <summary>
        /// Lấy đối tượng kết nối CSDL cho tool số liệu vận hành
        /// </summary>
        /// <returns></returns>
        public static System.Data.SqlClient.SqlConnection GetConnectionForWds()
        {
            try
            {
                System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection();
                cn.ConnectionString = "Data Source=.;Initial Catalog=wds;Integrated Security=True";
                cn.Open();
                return cn;
            }
            catch
            {
                throw new Exception("Không kết nối được với máy chủ CSDL");
            }
        }

        /// <summary>
        /// Lấy đối tượng kết nối CSDL mysql cho tool số liệu vận hành
        /// </summary>
        /// <returns></returns>
        public static MySql.Data.MySqlClient.MySqlConnection GetConnectionForGhStats()
        {
            try
            {
                MySql.Data.MySqlClient.MySqlConnection cn = new MySql.Data.MySqlClient.MySqlConnection();
                cn.ConnectionString = "Server=222.255.177.58;Port=3307;Database=gh_stats;Uid=webdev;Pwd=4286GJG6GJG";
                cn.Open();
                return cn;
            }
            catch (Exception ex)
            {
                throw new Exception("Không kết nối được với máy chủ CSDL");
            }
        }

        public static ISession getConnectionForCasGhStats()
        {
            try
            {
                Cluster cluster = Cluster.Builder().AddContactPoint("222.255.177.58").WithPort(9042).WithCredentials("webdev", "4286GJG6GJG").WithQueryTimeout(500000).Build();
                ISession session = cluster.Connect("gh_stats");
                return session;
            }
            catch (Exception ex)
            {
                throw new Exception("Không kết nối được với máy chủ CSDL_CASSANDRA");
            }
        }

        public static SshClient getSsh()
        {
            SshClient sshClient = new SshClient("222.255.177.58", 2012, "webdev", "fWqS3tCw");
            sshClient.Connect();
            sshClient.KeepAliveInterval = TimeSpan.FromSeconds(60);
            return sshClient;
        }
    }
}
